home *** CD-ROM | disk | FTP | other *** search
- /* ***************************************************************************
- * *
- * This test program illustrates 1D Finite Impulse Response (FIR) and *
- * Infinite Impulse Response (IIR) filters. *
- * *
- * We use here double precision versions DFIR1D and DIIR1D *
- * *
- ******************************************************************************
- * *
- * We first apply the IIR filter to an Impulse input *
- * We use then the same filter as a FIR filter... *
- * The final result an Impulse signal ! *
- * *
- *************************************************************************** */
- #include "conv.h"
- #define TMAX 7
- main() {
- int i;
- double impulse[TMAX+1], filter[2], out1[TMAX+1], out2[TMAX+1];
- impulse[0]=1.;
- for(i=1; i<= TMAX ; i++)
- impulse[i] = 0.;
- filter[0]=1.;
- filter[1]=.3;
- /* IIR Filter */
- diir1d( impulse,1,0,TMAX+1,filter,1,0,2,out1,1,0,TMAX+1);
- /* FIR Filter */
- dfir1d( out1,1,0,TMAX+1,filter,1,0,2,out2,1,0,TMAX+1,1.0,0.0);
- printf("\n Input is an Impulse :\n");
- print_array( impulse, TMAX+1);
- printf("\n After application of an IIR filter:\n");
- print_array( out1, TMAX+1);
- printf("\nAfter a final FIR filter, output is an Impulse again:\n");
- print_array( out2, TMAX+1);
- }
- print_array( double *ptr, int n) {
- for( ; n>0 ; n--)
- printf("%9.5f",*ptr++);
- printf("\n");
- }
-